package com.jobs.producer0.demo;

import cn.hutool.Hutool;
import cn.hutool.core.date.DateUtil;
import com.jobs.producer0.config.ConnectionConfig;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.MessageProperties;

import java.io.IOException;
import java.nio.charset.Charset;
import java.util.concurrent.TimeoutException;

/**
 * 简单模式
 * @author xxx
 */
public class SimpleType {
    public static void main(String[] args) throws IOException, TimeoutException {
        String message = "helloword1"+ Hutool.getAllUtils();
        //相当于数据库jdbc连接
        Connection connection = ConnectionConfig.getConnection();
        //相当于JDBc中的statement
        Channel channel = connection.createChannel();
        String queueName = "simple.type.queue";

        //定义队列
        //参数1：定义队列名称
        // 2.是否持久化
        // 3.是否排外（当连接关闭是，是否删除这个队列）
        // 4.自动删除（当此队列的连接数为0的时候，此队列会销毁，无论队列是否还有数据）
        //5.设置当前队列的参数
        channel.queueDeclare(queueName,true,false,false,null);
        //参数
//        1.交换机名称，如果直接发送到消息队列，则交换机名称为“”空
//        2.目标队列名称
        //3.设置当前这条消息的时间
        //4.参数4.消息的内容
        //ps：如果是路由模式 设置交换机后，第二个参数标识为key，而不队列

        AMQP.BasicProperties.Builder builder = new AMQP.BasicProperties.Builder();
        //对应页面上的Properties部分，传入一些预定的参数值。
        builder.deliveryMode(MessageProperties.PERSISTENT_TEXT_PLAIN.getDeliveryMode());
        builder.priority(MessageProperties.PERSISTENT_TEXT_PLAIN.getPriority());
        //builder.headers(headers);对应页面上的Headers部分。传入自定义的参数值
        builder.build();
        AMQP.BasicProperties prop = builder.build();


        channel.basicPublish("", queueName, null, message.getBytes(Charset.defaultCharset()));
        System.out.println("发送"+message);
        channel.close();
        connection.close();


    }
}
